home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / g_man / cat3 / OpenGL / gldrawpixels.z / gldrawpixels
Encoding:
Text File  |  2001-04-17  |  59.6 KB  |  680 lines

  1.  
  2.  
  3.  
  4. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss - write a block of pixels to the frame buffer
  10.  
  11.  
  12. CCCC SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      void ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss( GLsizei _w_i_d_t_h,
  14.                         GLsizei _h_e_i_g_h_t,
  15.                         GLenum _f_o_r_m_a_t,
  16.                         GLenum _t_y_p_e,
  17.                         const GLvoid *_p_i_x_e_l_s )
  18.  
  19.  
  20. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  21.      _w_i_d_t_h, _h_e_i_g_h_t Specify the dimensions of the pixel rectangle to be written
  22.                    into the frame buffer.
  23.  
  24.      _f_o_r_m_a_t        Specifies the format of the pixel data.  Symbolic constants
  25.                    GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX, GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX, GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT,
  26.                    GGGGLLLL____RRRRGGGGBBBB, GGGGLLLL____BBBBGGGGRRRR, GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA, GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT, GGGGLLLL____RRRREEEEDDDD,
  27.                    GGGGLLLL____GGGGRRRREEEEEEEENNNN, GGGGLLLL____BBBBLLLLUUUUEEEE, GGGGLLLL____AAAALLLLPPPPHHHHAAAA, GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE, and
  28.                    GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA are accepted.
  29.  
  30.      _t_y_p_e          Specifies the data type for _p_i_x_e_l_s.  Symbolic constants
  31.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE, GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT,
  32.                    GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT,
  33.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV,
  34.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV,
  35.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV,
  36.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV,
  37.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV,
  38.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, and
  39.                    GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV are accepted.
  40.  
  41.      _p_i_x_e_l_s        Specifies a pointer to the pixel data.
  42.  
  43. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  44.      ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss reads pixel data from memory and writes it into the frame
  45.      buffer relative to the current raster position, provided that the raster
  46.      position is valid.  Use ggggllllRRRRaaaasssstttteeeerrrrPPPPoooossss to set the current raster position;
  47.      use ggggllllGGGGeeeetttt with argument GGGGLLLL____CCCCUUUURRRRRRRREEEENNNNTTTT____RRRRAAAASSSSTTTTEEEERRRR____PPPPOOOOSSSSIIIITTTTIIIIOOOONNNN____VVVVAAAALLLLIIIIDDDD to determine if
  48.      the specified raster position is valid, and ggggllllGGGGeeeetttt with argument
  49.      GGGGLLLL____CCCCUUUURRRRRRRREEEENNNNTTTT____RRRRAAAASSSSTTTTEEEERRRR____PPPPOOOOSSSSIIIITTTTIIIIOOOONNNN to query the raster position.
  50.  
  51.      Several parameters define the encoding of pixel data in memory and
  52.      control the processing of the pixel data before it is placed in the frame
  53.      buffer.  These parameters are set with four commands:  ggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee,
  54.      ggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr, ggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp, and ggggllllPPPPiiiixxxxeeeellllZZZZoooooooommmm.  This reference page
  55.      describes the effects on ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss of many, but not all, of the
  56.      parameters specified by these four commands.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      Data is read from _p_i_x_e_l_s as a sequence of signed or unsigned bytes,
  75.      signed or unsigned shorts, signed or unsigned integers, or single-
  76.      precision floating-point values, depending on _t_y_p_e. When _t_y_p_e is one of
  77.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE, GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT,
  78.      GGGGLLLL____IIIINNNNTTTT, or GGGGLLLL____FFFFLLLLOOOOAAAATTTT each of these bytes, shorts, integers, or floating-
  79.      point values is interpreted as one color or depth component, or one
  80.      index, depending on _f_o_r_m_a_t.  When _t_y_p_e is one of GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222,
  81.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444,
  82.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888,
  83.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, each unsigned value is interpreted as
  84.      containing all the components for a single pixel, with the color
  85.      components arranged according to _f_o_r_m_a_t.  When _t_y_p_e is one of
  86.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV,
  87.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV,
  88.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV, each
  89.      unsigned value is interpreted as containing all color components,
  90.      specified by _f_o_r_m_a_t, for a single pixel in a reversed order. Indices are
  91.      always treated individually.  Color components are treated as groups of
  92.      one, two, three, or four values, again based on _f_o_r_m_a_t. Both individual
  93.      indices and groups of components are referred to as pixels.  If _t_y_p_e is
  94.      GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP, the data must be unsigned bytes, and _f_o_r_m_a_t must be either
  95.      GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX or GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX.  Each unsigned byte is treated as
  96.      eight 1-bit pixels, with bit ordering determined by GGGGLLLL____UUUUNNNNPPPPAAAACCCCKKKK____LLLLSSSSBBBB____FFFFIIIIRRRRSSSSTTTT
  97.      (see ggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee).
  98.  
  99.      _w_i_d_t_h x _h_e_i_g_h_t pixels are read from memory, starting at location _p_i_x_e_l_s.
  100.      By default, these pixels are taken from adjacent memory locations, except
  101.      that after all _w_i_d_t_h pixels are read, the read pointer is advanced to the
  102.      next four-byte boundary.  The four-byte row alignment is specified by
  103.      ggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee with argument GGGGLLLL____UUUUNNNNPPPPAAAACCCCKKKK____AAAALLLLIIIIGGGGNNNNMMMMEEEENNNNTTTT, and it can be set to one,
  104.      two, four, or eight bytes.  Other pixel store parameters specify
  105.      different read pointer advancements, both before the first pixel is read
  106.      and after all _w_i_d_t_h pixels are read.  See the ggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee reference page
  107.      for details on these options.
  108.  
  109.      The _w_i_d_t_h x _h_e_i_g_h_t pixels that are read from memory are each operated on
  110.      in the same way, based on the values of several parameters specified by
  111.      ggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr and ggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp.  The details of these operations, as well
  112.      as the target buffer into which the pixels are drawn, are specific to the
  113.      format of the pixels, as specified by _f_o_r_m_a_t.  _f_o_r_m_a_t can assume one of
  114.      13 symbolic values:
  115.  
  116.      GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX
  117.                Each pixel is a single value, a color index.  It is converted
  118.                to fixed-point format, with an unspecified number of bits to
  119.                the right of the binary point, regardless of the memory data
  120.                type.  Floating-point values convert to true fixed-point
  121.                values.  Signed and unsigned integer data is converted with all
  122.                fraction bits set to 0.  Bitmap data convert to either 0 or 1.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  137.  
  138.  
  139.  
  140.                Each fixed-point index is then shifted left by GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT
  141.                bits and added to GGGGLLLL____IIIINNNNDDDDEEEEXXXX____OOOOFFFFFFFFSSSSEEEETTTT.  If GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT is
  142.                negative, the shift is to the right.  In either case, zero bits
  143.                fill otherwise unspecified bit locations in the result.
  144.  
  145.                If the GL is in RGBA mode, the resulting index is converted to
  146.                an RGBA pixel with the help of the GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____RRRR,
  147.                GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____GGGG, GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____BBBB, and
  148.                GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____AAAA tables.  If the GL is in color index mode,
  149.                and if GGGGLLLL____MMMMAAAAPPPP____CCCCOOOOLLLLOOOORRRR is true, the index is replaced with the
  150.                value that it references in lookup table GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____IIII.
  151.                Whether the lookup replacement of the index is done or not, the
  152.                                                              b
  153.                integer part of the index is then ANDed with 2 -1, where b is
  154.                the number of bits in a color index buffer.
  155.  
  156.                The GL then converts the resulting indices or RGBA colors to
  157.                fragments by attaching the current raster position _z coordinate
  158.                and texture coordinates to each pixel, then assigning x and y
  159.                window coordinates to the nth fragment such that
  160.  
  161.                                    x  = x  + n mod width
  162.                                     n    r
  163.  
  164.                                     y  = y  + |n/width |
  165.                                      n    r
  166.  
  167.  
  168.                where (x ,y ) is the current raster position.  These pixel
  169.                        r  r
  170.                fragments are then treated just like the fragments generated by
  171.                rasterizing points, lines, or polygons.  Texture mapping, fog,
  172.                and all the fragment operations are applied before the
  173.                fragments are written to the frame buffer.
  174.  
  175.      GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX
  176.                Each pixel is a single value, a stencil index.  It is converted
  177.                to fixed-point format, with an unspecified number of bits to
  178.                the right of the binary point, regardless of the memory data
  179.                type.  Floating-point values convert to true fixed-point
  180.                values.  Signed and unsigned integer data is converted with all
  181.                fraction bits set to 0.  Bitmap data convert to either 0 or 1.
  182.  
  183.                Each fixed-point index is then shifted left by GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT
  184.                bits, and added to GGGGLLLL____IIIINNNNDDDDEEEEXXXX____OOOOFFFFFFFFSSSSEEEETTTT.  If GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT is
  185.                negative, the shift is to the right.  In either case, zero bits
  186.                fill otherwise unspecified bit locations in the result.  If
  187.                GGGGLLLL____MMMMAAAAPPPP____SSSSTTTTEEEENNNNCCCCIIIILLLL is true, the index is replaced with the value
  188.                that it references in lookup table GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____SSSS____TTTTOOOO____SSSS.
  189.                Whether the lookup replacement of the index is done or not, the
  190.                                                              b
  191.                integer part of the index is then ANDed with 2 -1, where b is
  192.                the number of bits in the stencil buffer.  The resulting
  193.                stencil indices are then written to the stencil buffer such
  194.                that the nth index is written to location
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                                         PPPPaaaaggggeeee 3333
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  208.  
  209.  
  210.  
  211.                                  x  = x  + n mod width
  212.                                   n    r
  213.  
  214.                                  y  = y  + | n/width |
  215.                                   n    r
  216.  
  217.  
  218.           where (x ,y ) is the current raster position.  Only the pixel
  219.                   r  r
  220.           ownership test, the scissor test, and the stencil writemask affect
  221.           these write operations.
  222.  
  223.      GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT
  224.           Each pixel is a single-depth component.  Floating-point data is
  225.           converted directly to an internal floating-point format with
  226.           unspecified precision.  Signed integer data is mapped linearly to
  227.           the internal floating-point format such that the most positive
  228.           representable integer value maps to 1.0, and the most negative
  229.           representable value maps to -1.0.  Unsigned integer data is mapped
  230.           similarly:  the largest integer value maps to 1.0, and 0 maps to
  231.           0.0.  The resulting floating-point depth value is then multiplied by
  232.           GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____SSSSCCCCAAAALLLLEEEE and added to GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____BBBBIIIIAAAASSSS.  The result is clamped to
  233.           the range [0,1].
  234.  
  235.           The GL then converts the resulting depth components to fragments by
  236.           attaching the current raster position color or color index and
  237.           texture coordinates to each pixel, then assigning x and y window
  238.           coordinates to the nth fragment such that
  239.  
  240.                                  x  = x  + n mod width
  241.                                   n    r
  242.  
  243.                                  y  = y  + | n/width |
  244.                                   n    r
  245.  
  246.  
  247.           where (x ,y ) is the current raster position.  These pixel fragments
  248.                   r  r
  249.           are then treated just like the fragments generated by rasterizing
  250.           points, lines, or polygons.  Texture mapping, fog, and all the
  251.           fragment operations are applied before the fragments are written to
  252.           the frame buffer.
  253.  
  254.      GGGGLLLL____RRRRGGGGBBBBAAAA
  255.  
  256.      GGGGLLLL____BBBBGGGGRRRRAAAA
  257.  
  258.      GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT
  259.           Each pixel is a four-component group: for GGGGLLLL____RRRRGGGGBBBBAAAA, the red component
  260.           is first, followed by green, followed by blue, followed by alpha;
  261.           for GGGGLLLL____BBBBGGGGRRRRAAAA the order is blue, green, red and then alpha; for
  262.           GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT the order is alpha, blue, green, and then red.
  263.           Floating-point values are converted directly to an internal
  264.           floating-point format with unspecified precision.  Signed integer
  265.           values are mapped linearly to the internal floating-point format
  266.           such that the most positive representable integer value maps to 1.0,
  267.           and the most negative representable value maps to -1.0. (Note that
  268.           this mapping does not convert 0 precisely to 0.0.)  Unsigned integer
  269.  
  270.  
  271.  
  272.                                                                         PPPPaaaaggggeeee 4444
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  280.  
  281.  
  282.  
  283.           data is mapped similarly:  the largest integer value maps to 1.0,
  284.           and 0 maps to 0.0.  The resulting floating-point color values are
  285.           then multiplied by GGGGLLLL____cccc____SSSSCCCCAAAALLLLEEEE and added to GGGGLLLL____cccc____BBBBIIIIAAAASSSS, where _c is
  286.           RED, GREEN, BLUE, and ALPHA for the respective color components.
  287.           The results are clamped to the range [0,1].
  288.  
  289.           If GGGGLLLL____MMMMAAAAPPPP____CCCCOOOOLLLLOOOORRRR is true, each color component is scaled by the size
  290.           of lookup table GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____cccc____TTTTOOOO____cccc, then replaced by the value that
  291.           it references in that table.  _c is R, G, B, or A respectively.
  292.  
  293.           The GL then converts the resulting RGBA colors to fragments by
  294.           attaching the current raster position _z coordinate and texture
  295.           coordinates to each pixel, then assigning x and y window coordinates
  296.           to the nth fragment such that
  297.  
  298.                                  x  = x  + n mod width
  299.                                   n    r
  300.  
  301.                                  y  = y  + | n/width |
  302.                                   n    r
  303.  
  304.  
  305.           where (x ,y ) is the current raster position.  These pixel fragments
  306.                   r  r
  307.           are then treated just like the fragments generated by rasterizing
  308.           points, lines, or polygons.  Texture mapping, fog, and all the
  309.           fragment operations are applied before the fragments are written to
  310.           the frame buffer.
  311.  
  312.      GGGGLLLL____RRRREEEEDDDD
  313.           Each pixel is a single red component.  This component is converted
  314.           to the internal floating-point format in the same way the red
  315.           component of an RGBA pixel is. It is then converted to an RGBA pixel
  316.           with green and blue set to 0, and alpha set to 1.  After this
  317.           conversion, the pixel is treated as if it had been read as an RGBA
  318.           pixel.
  319.  
  320.      GGGGLLLL____GGGGRRRREEEEEEEENNNN
  321.           Each pixel is a single green component.  This component is converted
  322.           to the internal floating-point format in the same way the green
  323.           component of an RGBA pixel is.  It is then converted to an RGBA
  324.           pixel with red and blue set to 0, and alpha set to 1.  After this
  325.           conversion, the pixel is treated as if it had been read as an RGBA
  326.           pixel.
  327.  
  328.      GGGGLLLL____BBBBLLLLUUUUEEEE
  329.           Each pixel is a single blue component.  This component is converted
  330.           to the internal floating-point format in the same way the blue
  331.           component of an RGBA pixel is.  It is then converted to an RGBA
  332.           pixel with red and green set to 0, and alpha set to 1.  After this
  333.           conversion, the pixel is treated as if it had been read as an RGBA
  334.           pixel.
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.                                                                         PPPPaaaaggggeeee 5555
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  349.  
  350.  
  351.  
  352.      GGGGLLLL____AAAALLLLPPPPHHHHAAAA
  353.           Each pixel is a single alpha component.  This component is converted
  354.           to the internal floating-point format in the same way the alpha
  355.           component of an RGBA pixel is.  It is then converted to an RGBA
  356.           pixel with red, green, and blue set to 0.  After this conversion,
  357.           the pixel is treated as if it had been read as an RGBA pixel.
  358.  
  359.      GGGGLLLL____RRRRGGGGBBBB
  360.  
  361.      GGGGLLLL____BBBBGGGGRRRR
  362.           Each pixel is a three-component group:  red first, followed by
  363.           green, followed by blue; for GGGGLLLL____BBBBGGGGRRRR, the first component is blue,
  364.           followed by green and then red.  Each component is converted to the
  365.           internal floating-point format in the same way the red, green, and
  366.           blue components of an RGBA pixel are.  The color triple is converted
  367.           to an RGBA pixel with alpha set to 1.  After this conversion, the
  368.           pixel is treated as if it had been read as an RGBA pixel.
  369.  
  370.      GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE
  371.           Each pixel is a single luminance component.  This component is
  372.           converted to the internal floating-point format in the same way the
  373.           red component of an RGBA pixel is.  It is then converted to an RGBA
  374.           pixel with red, green, and blue set to the converted luminance
  375.           value, and alpha set to 1.  After this conversion, the pixel is
  376.           treated as if it had been read as an RGBA pixel.
  377.  
  378.      GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA
  379.           Each pixel is a two-component group:  luminance first, followed by
  380.           alpha.  The two components are converted to the internal floating-
  381.           point format in the same way the red component of an RGBA pixel is.
  382.           They are then converted to an RGBA pixel with red, green, and blue
  383.           set to the converted luminance value, and alpha set to the converted
  384.           alpha value.  After this conversion, the pixel is treated as if it
  385.           had been read as an RGBA pixel.
  386.  
  387.      The following table summarizes the meaning of the valid constants for the
  388.      _t_y_p_e parameter:
  389.  
  390.  
  391. _________________________________________________________________________________________
  392. TTTTyyyyppppeeee                             CCCCoooorrrrrrrreeeessssppppoooonnnnddddiiiinnnngggg TTTTyyyyppppeeee
  393. _________________________________________________________________________________________
  394. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE                 unsigned 8-bit integer
  395. GGGGLLLL____BBBBYYYYTTTTEEEE                          signed 8-bit integer
  396. GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP                        single bits in unsigned 8-bit integers
  397. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT                unsigned 16-bit integer
  398. GGGGLLLL____SSSSHHHHOOOORRRRTTTT                         signed 16-bit integer
  399. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT                  unsigned 32-bit integer
  400. GGGGLLLL____IIIINNNNTTTT                           32-bit integer
  401. GGGGLLLL____FFFFLLLLOOOOAAAATTTT                         single-precision floating-point
  402.  
  403.  
  404.  
  405.  
  406.  
  407.                                                                         PPPPaaaaggggeeee 6666
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  415.  
  416.  
  417.  
  418. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222           unsigned 8-bit integer
  419. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV       unsigned 8-bit integer with reversed component ordering
  420. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555          unsigned 16-bit integer
  421. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV      unsigned 16-bit integer with reversed component ordering
  422. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444        unsigned 16-bit integer
  423. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV    unsigned 16-bit integer with reversed component ordering
  424. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111        unsigned 16-bit integer
  425. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV    unsigned 16-bit integer with reversed component ordering
  426. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888          unsigned 32-bit integer
  427. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV      unsigned 32-bit integer with reversed component ordering
  428. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222       unsigned 32-bit integer
  429. GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV   unsigned 32-bit integer with reversed component ordering
  430. _________________________________________________________________________________________
  431.  
  432.  
  433.      The rasterization described so far assumes pixel zoom factors of 1.  If
  434.      ggggllllPPPPiiiixxxxeeeellllZZZZoooooooommmm is used to change the x and y pixel zoom factors, pixels are
  435.      converted to fragments as follows.  If (x , y ) is the current raster
  436.                                               r   r
  437.      position, and a given pixel is in the nth column and mth row of the pixel
  438.      rectangle, then fragments are generated for pixels whose centers are in
  439.      the rectangle with corners at
  440.  
  441.                               (x  + zoom n, y  + zoom m)
  442.                                 r       x    r       y
  443.  
  444.                          (x  + zoom (n + 1), y  + zoom (m + 1))
  445.                            r       x          r       y
  446.  
  447.  
  448.      where zoom  is the value of GGGGLLLL____ZZZZOOOOOOOOMMMM____XXXX and zoom  is the value of
  449.                x                                   y
  450.      GGGGLLLL____ZZZZOOOOOOOOMMMM____YYYY.
  451.  
  452.      When GGGGLLLL____IIIINNNNTTTTEEEERRRRLLLLAAAACCCCEEEE____SSSSGGGGIIIIXXXX is enabled, every other row of the destination
  453.      pixel rectangle is modified.  The height of the pixel rectangle is
  454.      equivalent to 2xGGGGLLLL____ZZZZOOOOOOOOMMMM____YYYYxheight.  Only rows (y +0,y +2,...) are affected
  455.                                                     r    r
  456.      by the draw operation.
  457.  
  458.      Normally ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss is synchronous: OpenGL executes a ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss
  459.      command in the order it is issued in the OpenGL command stream.  Calling
  460.      ggggllllEEEEnnnnaaaabbbblllleeee with parameter GGGGLLLL____AAAASSSSYYYYNNNNCCCC____DDDDRRRRAAAAWWWW____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX causes subsequent
  461.      ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss commands to be asynchronous as defined by the SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc
  462.      extension.  An asynchronous ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss command samples the OpenGL state
  463.      vector at the point in the OpenGL command stream where the command is
  464.      issued, but the results of the command (e.g. updates to the frame buffer)
  465.      do not happen until some unspecified time in the future.  In particular,
  466.      the order of the asynchronous command relative to other OpenGL commands
  467.      issued later in the command stream is undefined.  An implementation may
  468.      choose to execute asynchronous commands in parallel with the normal
  469.      command stream or at some convenient time in the future.
  470.  
  471.      Calling ggggllllDDDDiiiissssaaaabbbblllleeee with parameter GGGGLLLL____AAAASSSSYYYYNNNNCCCC____DDDDRRRRAAAAWWWW____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX restores the
  472.      default synchronous behavior for subsequent ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss commands.  It
  473.      does not affect any pending asynchronous ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss commands, or wait
  474.      for their completion.
  475.  
  476.  
  477.  
  478.                                                                         PPPPaaaaggggeeee 7777
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  486.  
  487.  
  488.  
  489.      When an asynchronous ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss command is issued, it is associated
  490.      with the current value of GGGGLLLL____AAAASSSSYYYYNNNNCCCC____MMMMAAAARRRRKKKKEEEERRRR____SSSSGGGGIIIIXXXX as defined by the
  491.      SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc extension.  A program can determine if an asynchronous
  492.      ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss command has completed by using the ggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX or
  493.      ggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX commands.
  494.  
  495.      There is a maximum number of asynchronous ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss commands that can
  496.      be outstanding at any one time, defined by the implementation.  This
  497.      value can be queried with ggggllllGGGGeeeettttIIIInnnntttteeeeggggeeeerrrrvvvv with argument
  498.      GGGGLLLL____MMMMAAAAXXXX____AAAASSSSYYYYNNNNCCCC____DDDDRRRRAAAAWWWW____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX.
  499.  
  500. NNNNOOOOTTTTEEEESSSS
  501.      GGGGLLLL____BBBBGGGGRRRR and GGGGLLLL____BBBBGGGGRRRRAAAA are only valid for _f_o_r_m_a_t if the GL version is 1.2 or
  502.      greater.
  503.  
  504.      GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT is valid only if the EEEEXXXXTTTT____aaaabbbbggggrrrr extension is supported.
  505.  
  506.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV,
  507.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV,
  508.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV,
  509.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV,
  510.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV,
  511.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, and GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV are only
  512.      valid for _t_y_p_e if the GL version is 1.2 or greater.
  513.  
  514. EEEERRRRRRRROOOORRRRSSSS
  515.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if either _w_i_d_t_h or _h_e_i_g_h_t is negative.
  516.  
  517.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _f_o_r_m_a_t or _t_y_p_e is not one of the accepted
  518.      values.
  519.  
  520.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is GGGGLLLL____RRRREEEEDDDD, GGGGLLLL____GGGGRRRREEEEEEEENNNN, GGGGLLLL____BBBBLLLLUUUUEEEE,
  521.      GGGGLLLL____AAAALLLLPPPPHHHHAAAA, GGGGLLLL____RRRRGGGGBBBB, GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRR, GGGGLLLL____BBBBGGGGRRRRAAAA, GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT, GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE, or
  522.      GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA, and the GL is in color index mode.
  523.  
  524.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP and _f_o_r_m_a_t is not
  525.      either GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX or GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX.
  526.  
  527.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX and there
  528.      is no stencil buffer.
  529.  
  530.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss is executed between the
  531.      execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd.
  532.  
  533.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is one
  534.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV,
  535.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555, of GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV and _f_o_r_m_a_t is not
  536.      GGGGLLLL____RRRRGGGGBBBB.
  537.  
  538.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is one of
  539.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV,
  540.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV,
  541.  
  542.  
  543.  
  544.                                                                         PPPPaaaaggggeeee 8888
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  552.  
  553.  
  554.  
  555.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV,
  556.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, or GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV and _f_o_r_m_a_t
  557.      is not GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA or GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT.
  558.  
  559.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated when the SSSSGGGGIIIIXXXX____ssssuuuubbbbssssaaaammmmpppplllleeee extension is
  560.      supported, and the pixel storage mode GGGGLLLL____UUUUNNNNPPPPAAAACCCCKKKK____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____RRRRAAAATTTTEEEE____SSSSGGGGIIIIXXXX is
  561.      not GGGGLLLL____PPPPIIIIXXXXEEEELLLL____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____4444444444444444____SSSSGGGGIIIIXXXX, and _w_i_d_t_h is not a multiple of 2, or
  562.      _f_o_r_m_a_t is not a 3 or 4 component format, or _t_y_p_e is a packed pixels type.
  563.  
  564.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if GGGGLLLL____AAAASSSSYYYYNNNNCCCC____DDDDRRRRAAAAWWWW____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX is enabled
  565.      and the number of asynchronous ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss commands that have been
  566.      issued but not queried (using ggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX or ggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX)
  567.      exceeds GGGGLLLL____MMMMAAAAXXXX____AAAASSSSYYYYNNNNCCCC____DDDDRRRRAAAAWWWW____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX.
  568.  
  569. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  570.      ggggllllGGGGeeeetttt with argument GGGGLLLL____CCCCUUUURRRRRRRREEEENNNNTTTT____RRRRAAAASSSSTTTTEEEERRRR____PPPPOOOOSSSSIIIITTTTIIIIOOOONNNN
  571.      ggggllllGGGGeeeetttt with argument GGGGLLLL____CCCCUUUURRRRRRRREEEENNNNTTTT____RRRRAAAASSSSTTTTEEEERRRR____PPPPOOOOSSSSIIIITTTTIIIIOOOONNNN____VVVVAAAALLLLIIIIDDDD
  572.      ggggllllGGGGeeeetttt with argument GGGGLLLL____IIIINNNNTTTTEEEERRRRLLLLAAAACCCCEEEE____SSSSGGGGIIIIXXXX
  573.  
  574.  
  575. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  576.      The SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc and SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc____ppppiiiixxxxeeeellll extensions are implemented only on
  577.      OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems.
  578.  
  579.      On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems convolution may not be
  580.      used in the following circumstances:
  581.  
  582.           1.  When rendering to pixmaps.
  583.  
  584.           2.  When fragment processing (texturing, depth buffering, alpha
  585.               testing, multisampling, fog) is enabled.
  586.  
  587.           3.  When histogramming or minmax is enabled.
  588.  
  589.           4.  When either of the pixel zoom factors has a value other than 1.0
  590.               or -1.0.
  591.  
  592.      In these cases, ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss and ggggllllCCCCooooppppyyyyPPPPiiiixxxxeeeellllssss report a
  593.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN error and do not transfer any pixels.
  594.  
  595.      Performance note for RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems:
  596.      Unsigned color types use the fastest pixel-drawing path.  Smaller types
  597.      (e.g., GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE) require less host-to-graphics bandwidth, and are
  598.      therefore faster than larger types (e.g., GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT).  Signed and
  599.      float types use the significantly slower floating-point pixel-drawing
  600.      path.  The slower pixel-drawing path is also used when the format is
  601.      GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT and when fragment operations (i.e., depth or alpha
  602.      testing, texturing, fog, etc.) are enabled.
  603.  
  604.      For best performance on XXXXSSSS, XXXXZZZZ, EEEEllllaaaannnn, and EEEExxxxttttrrrreeeemmmmeeee systems set type to
  605.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE and, when drawing to the color buffer, set format to
  606.      GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT.
  607.  
  608.  
  609.  
  610.                                                                         PPPPaaaaggggeeee 9999
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617. ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))               OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee               ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  618.  
  619.  
  620.  
  621.      On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems, signed color-index pixels written to
  622.      drawables with dual-personality (luminance + color-index) visuals will be
  623.      sign-extended into the high-order bits of the framebuffer.  For example,
  624.      writing a signed byte value of 0x88 would yield 0xF88 in a 12-bit
  625.      drawable.
  626.  
  627.      The SSSSGGGGIIIIXXXX____yyyyccccrrrrccccbbbb extension is supported only on OOOO2222 systems.  When using
  628.      GGGGLLLL____YYYYCCCCRRRRCCCCBBBB____444422222222____SSSSGGGGIIIIXXXX with ggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss on OOOO2222 systems, an odd integer value
  629.      for GGGGLLLL____UUUUNNNNPPPPAAAACCCCKKKK____SSSSKKKKIIIIPPPP____PPPPIIIIXXXXEEEELLLLSSSS will be set to the next highest even integer
  630.      value to preserve color alignment.
  631.  
  632.      On CRIME systems with a Crime Revision of 1.0-1.3, the SSSSGGGGIIIIXXXX____yyyyccccrrrrccccbbbb
  633.      extension will generate incorrect RGB colors from video with highly
  634.      saturated blue or red values. Commonly, the blue of a very saturated sky
  635.      will be converted to a pale yellow.  This problem is fixed with the CRIME
  636.      1.4 graphics.
  637.  
  638.      On OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems the format GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT22224444____SSSSGGGGIIIIXXXX can be used
  639.      to transfer depth pixel values to and from the depth buffer in their
  640.      internal eye-space range.  There are performance advantages over
  641.      transfers that convert to screen-space values, particularly for
  642.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT type pixels.
  643.  
  644.      The SSSSGGGGIIIIXXXX____iiiinnnntttteeeerrrrllllaaaacccceeee extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy
  645.      systems, on RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems, on OOOOccccttttaaaannnneeee2222
  646.      VVVVPPPPrrrroooo systems, and on OOOO2222 systems.
  647.  
  648.      The EEEEXXXXTTTT____ppppaaaacccckkkkeeeedddd____ppppiiiixxxxeeeellllssss extension is not supported on RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee,
  649.      RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems.
  650.  
  651.      The SSSSGGGGIIIIXXXX____ssssuuuubbbbssssaaaammmmpppplllleeee and SSSSGGGGIIIIXXXX____rrrreeeessssaaaammmmpppplllleeee extensions are supported only on
  652.      OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems.  Applying the GGGGLLLL____PPPPIIIIXXXXEEEELLLL____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____2222444422224444____SSSSGGGGIIIIXXXX
  653.      subsample rate is accelerated for direct immmediate mode transfers when
  654.      the format is GGGGLLLL____RRRRGGGGBBBB or GGGGLLLL____RRRRGGGGBBBBAAAA, and the type is GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE or
  655.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT.
  656.  
  657.  
  658. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  659.      ggggllllAAAAllllpppphhhhaaaaFFFFuuuunnnncccc, ggggllllBBBBlllleeeennnnddddFFFFuuuunnnncccc, ggggllllCCCCooooppppyyyyPPPPiiiixxxxeeeellllssss, ggggllllDDDDeeeepppptttthhhhFFFFuuuunnnncccc, ggggllllLLLLooooggggiiiiccccOOOOpppp,
  660.      ggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp, ggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee, ggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr, ggggllllPPPPiiiixxxxeeeellllZZZZoooooooommmm, ggggllllRRRRaaaasssstttteeeerrrrPPPPoooossss,
  661.      ggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss, ggggllllSSSScccciiiissssssssoooorrrr, ggggllllSSSStttteeeennnncccciiiillllFFFFuuuunnnncccc, ggggllllAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrSSSSGGGGIIIIXXXX,
  662.      ggggllllDDDDeeeelllleeeetttteeeeAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrssssSSSSGGGGIIIIXXXX, ggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX, ggggllllGGGGeeeennnnAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrssssSSSSGGGGIIIIXXXX,
  663.      ggggllllIIIIssssAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrSSSSGGGGIIIIXXXX, ggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.                                                                        PPPPaaaaggggeeee 11110000
  677.  
  678.  
  679.  
  680.